package com.jacob.androidstudy.androidnote.userinterface;

import android.app.Activity;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;

/**
 * Menu
 * 菜单是很多程序里的常见用户接口。用户在程序中使用设备上“Menu”键的调出菜单。 为了保证良好的用户体验，在Activity中应该使用Menu APIs来提供用户菜单和选项。
 * 但是从Android 3.0开始，不再要求Android设备提供硬“Menu”键。为了适应这种变化，程序应该脱离依赖传统的6-item菜单面板，提供一个Action Bar来让用户进行操作。编写Action Bar时，仍然使用 Menu APIs。
 * 
 * 
 * 
 *
 */
public class Menu菜单 extends Activity {
	/**
	 * OptionsMenu
	 * “选项菜单”是Activity中最主要的Menu形式。“选项菜单”中通常包含某些对整个程序有影响的动作，例如：设置、搜索等。
	 * Android 2.3（含之前）设备的用户，可以通过设备上的硬“Menu”键，打开“选项菜单”。Android 3.0（含之后）的设备因为不一定会有硬“Menu”键，所以应该对其用户提供ActionBar来代替传统的OptionsMenu。
	 * 如果菜单超过6项，系统会自动将第5项后的菜单隐藏为“更多”。
	 * 
	 * 
	 * 
	 */
	public void OptionsMenu() {
//		创建OptionsMenu，方法1：
//		1.创建Menu XML文件。
//		2.创建Activity。
		class MainActivity extends Activity {
//			覆盖onOptionsItemSelected()方法。用户第一次按下硬“Menu”键时，系统调用本方法创建“选项菜单”。
			@Override
			public boolean onCreateOptionsMenu(Menu menu) {
				
//				得到MenuInflater对象
				MenuInflater menuInflater = this.getMenuInflater();
				
//				调用MenuInflater对象的inflate()方法，并传入Menu XML文件和Menu对象。
//				menuInflater.inflate(android.R.menu.option_menu, menu);
				
				return super.onCreateOptionsMenu(menu);
				
			}
			
//			覆盖onOptionsItemSelected()方法。用户按下选项菜单中的某一个菜单时，系统调用本方法。
			@Override
			public boolean onOptionsItemSelected(MenuItem item) {
				
//				若处理了按下事件，则返回true；若没有处理，返回父类方法的返回值。
/*				if (item.getItemId()==android.R.id.add) {
					return true;
				} else if (item.getItemId()==android.R.id.delete) {
					return true;
				} else {
					return super.onOptionsItemSelected(item);
				}*/
				
				return super.onOptionsItemSelected(item);
			}

//			覆盖onOptionsItemSelected()方法。选项菜单关闭时（用户按下取消键/菜单键/按下选项菜单中的某一个菜单），系统调用本方法。
			@Override
			public void onOptionsMenuClosed(Menu menu) {
				super.onOptionsMenuClosed(menu);
			}

		}
		
		
		
		
		
	}
	
	/**
	 * ContextMenu
	 * “上下文菜单”是一种用户在屏幕上长按某个元素时弹出的浮动菜单。“上下文菜单”中包含对选中元素进行操作的动作。
	 * 开发Android 3.0（含之后）的程序，建议使用ContextualActionMode代替ContextMenu。
	 * 
	 * 
	 */
	public void ContextMenu() {
//		创建ContextMenu，方法1：
//		1.创建Menu XML文件。
//		2.创建Activity。然后在Activity中，对需要显示ContextMenu的View进行注册。
		class MainActivity extends Activity {
//			
			@Override
			public void onCreateContextMenu(android.view.ContextMenu menu, View v, ContextMenuInfo menuInfo) {
				super.onCreateContextMenu(menu, v, menuInfo);
//				得到MenuInflater对象
				MenuInflater menuInflater = this.getMenuInflater();
				
//				调用MenuInflater对象的inflate()方法，并传入Menu XML文件和Menu对象。
//				menuInflater.inflate(android.R.menu.option_menu, menu);
				
			}
			
//			覆盖onContextItemSelected()方法。用户按下选项菜单中的某一个菜单时，系统调用本方法。
			@Override
			public boolean onContextItemSelected(MenuItem item) {
//				得到AdapterView.AdapterContextMenuInfo对象，此对象中包含选中View对象的id和position。
				AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
				
//				若处理了按下事件，则返回true；若没有处理，返回父类方法的返回值。
/*				if (item.getItemId()==android.R.id.add) {
					return true;
				} else if (item.getItemId()==android.R.id.delete) {
					return true;
				} else {
					return super.onOptionsItemSelected(item);
				}*/
				
				return super.onContextItemSelected(item);
			}

//			覆盖onContextMenuClosed()方法。选项菜单关闭时（用户按下取消键/菜单键/按下选项菜单中的某一个菜单），系统调用本方法。
			@Override
			public void onContextMenuClosed(Menu menu) {
				super.onOptionsMenuClosed(menu);
			}

		}
		
		
	}
	
	/**
	 * 
	 * 
	 */
	public void ActionBar() {
		
	}
	
	/**
	 * 
	 * 
	 */
	public void ContextualActionMode() {
		
	}
	
	/**
	 * 
	 */
	public void PopupMenu() {
		
	}



}
